Non-volatile memory is commonly used for mass storage of data (e.g., music, videos, photos, and other data), such as within consumer electronic devices. Flash memory (e.g., NAND Flash) has become ubiquitous as non-volatile storage used within mobile consumer electronics due to its low power consumption and superior performance.
During operation of the non-volatile memory, free space may need to be created as new data is written and old data remains un-erased. Memory processes to create free space often requires relocating valid data into different parts of the memory array in order to more efficiently use the memory array for subsequent writing operations. Conventional systems maintain virtual blocks that map to physical blocks within the memory array, and such virtual blocks are often statically constructed within the firmware of the memory device each time that free space is needed. This static construction may lead to less efficient management of relocation of data when blocks are erased that have greater amounts of valid data than needed to be relocated in comparison with other blocks that may be linked to different virtual blocks.